package com.xxl.config;

import com.xxl.interceptor.AuthInterceptor;
import com.xxl.util.UrlConstant;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 扩展spring mvc,目的->跳转中心
 * @author xxl
 * @date 2023/3/4
 */
@Configuration
public class SpringMvc implements WebMvcConfigurer {
    /**
     *  添加拦截器
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        InterceptorRegistration registration = registry.addInterceptor(new AuthInterceptor());
        registration
                //拦截那些路径
                .addPathPatterns("/**")
                //不拦截那些路径
                .excludePathPatterns(
                        //首页
                        "/",
                        //静态资源
                        "/**/*.js",
                        "/**/*.css",
                        "/**/*.png",
                        "/**/*.jpg",
                        //请求登录 /user/login
                        "/user/login",
                        //跳转到登录页 /jump/page/login
                        UrlConstant.JUMP_LOGIN_PAGE,
                        //跳转到注册页 /page/register
                        UrlConstant.JUMP_REGISTER_PAGE
                );
    }

    /**
     *  简单的映射其实也是controller，最合适被作为跳转
     *  如果请求带后缀名，返回视图也带后缀名
     *  如：/page/main.html如果有controller处理返回就是(没有就找资源) /page/main.html但实际是/page/home.html(注意)
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        /*
        这一句相当于controller器的效果
        addViewController --> @RequestMapping("login") == 请求
        setViewName -->  相当于控制类的中的方法返回字符 == 返回页面
        */
        System.out.println("使用了addViewControllers");
        //展示页/注册页 --> 登录页
        registry.addViewController(UrlConstant.JUMP_LOGIN_PAGE).setViewName("/page/login");
        //登录页 --> 注册页
        registry.addViewController(UrlConstant.JUMP_REGISTER_PAGE).setViewName("/page/register");
        //登录页 --> 主页
        registry.addViewController(UrlConstant.JUMP_MAIN_PAGE).setViewName("/page/home");
        //主页 --> 员工页
        registry.addViewController(UrlConstant.JUMP_EMPLOY_PAGE).setViewName("/page/employ");
        //员工页 --> 添加员工页
        registry.addViewController(UrlConstant.JUMP_ADD_EMPLOY).setViewName("/page/addEmploy");
        // 主页 --> 个人信息页
        registry.addViewController(UrlConstant.JUMP_PERSON_PAGE).setViewName("/page/person");
    }
    /**
     *  注意点自定义的localeResolver必须是”localeResolver“名字并且必须处理这个请求否则不会走地区解析器
     */
    @Bean("localeResolver")
    public ChangeLocale changeLocale() {
        return new ChangeLocale();
    }

}
